import pandas as pd
import os


def process_recipes_table():
    # 加载配方数据
    recipes_df = pd.read_excel('data/database/Recipes.xlsx', sheet_name='Sheet1')
    print(f"✅ 成功加载配方数据: {len(recipes_df)} 条记录")

    # 加载物品ID映射表
    id_map_path = 'data/id/物品 ID.xlsx'
    id_map_df = pd.read_excel(id_map_path)
    print(f"✅ 成功加载物品ID映射表: {len(id_map_df)} 条记录")

    # 智能选择名称列（优先使用“名称”列）
    if '名称' in id_map_df.columns:
        cn_name_col = '名称'
        print("🔍 使用物品ID表的[名称]列作为翻译基准")
    elif 'Chinese' in id_map_df.columns:
        cn_name_col = 'Chinese'
        print("🌐 使用[Chinese]列作为翻译基准")
    else:
        cn_name_col = id_map_df.columns[0]
        print(f"⚠️ 使用第一列[{cn_name_col}]作为名称列")

    # 创建名称映射字典（关键：去除英文名空格）
    name_map = {}
    for _, row in id_map_df.iterrows():
        en_key = str(row.get('内部名称', '')).replace(' ', '').strip()
        cn_value = str(row[cn_name_col]).strip()
        if en_key and cn_value:
            name_map[en_key] = cn_value
    print(f"🗺️ 创建无空格名称映射: {len(name_map)} 条记录")

    # 步骤1：过滤旧版配方
    filtered_df = recipes_df[recipes_df['legacy'] != '是'].copy()
    print(f"🧹 过滤旧版配方: 原始 {len(recipes_df)} → 保留 {len(filtered_df)} 条")

    # 步骤2：翻译result列（确保作为第一列）
    def translate_result(en_name):
        if pd.isna(en_name):
            return ""
        clean_name = str(en_name).replace(' ', '').strip()
        return name_map.get(clean_name, en_name)  # 精确匹配

    # 创建“物品名称”列（result列的翻译结果）
    filtered_df['物品名称'] = filtered_df['result'].apply(translate_result)
    print(f"🔠 已翻译result列 → 物品名称（首列）")

    # 步骤3：处理args列（格式转换）
    def process_args(args_str):
        if pd.isna(args_str):
            return ""
        materials = []
        for item in str(args_str).split('^'):
            parts = item.split('¦')
            if len(parts) == 2:
                en_item = parts[0].replace(' ', '')
                cn_name = name_map.get(en_item, en_item)
                materials.append(f"{cn_name}*{parts[1]}")
        return "、".join(materials)

    filtered_df['所需材料'] = filtered_df['args'].apply(process_args)
    print(f"🔧 已转换args列 → 所需材料")

    # 步骤4：翻译station列
    filtered_df['制造站'] = filtered_df['station'].apply(translate_result)
    print(f"🏭 已翻译station列 → 制造站")

    # 步骤5：重命名amount列
    filtered_df.rename(columns={'amount': '得到数量'}, inplace=True)

    # 步骤6：构造最终表格（确保首列为物品名称）
    final_columns = ['物品名称', '得到数量', '制造站', '所需材料']
    result_df = filtered_df[final_columns]

    # 保存结果（UTF-8-SIG编码确保Excel中文兼容）
    output_path = 'data/final_data/合成表.xlsx'
    result_df.to_excel(output_path, index=False)
    print(f"\n🎉 处理完成！首列为result的翻译结果")
    print(f"💾 文件保存至: {os.path.abspath(output_path)}")
    return result_df


if __name__ == '__main__':
    process_recipes_table()